package cn.com.surker.production.service;

import cn.com.surker.oa.entity.OaProductionContract;
import cn.com.surker.production.entity.TranCar;
import cn.com.surker.production.entity.vo.TranCarVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.com.surker.spring.RestResultDto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * <p>
 * 生产车辆表 服务类
 * </p>
 *
 * @author admin
 * @since 2024-09-04
 */
public interface TranCarService extends IService<TranCar> {

	/**
	 * 查询站点运输车辆列表
	 *
	 * @param orgId            站点id
	 * @param carStatusList    车辆类型
	 * @param sortBy            排序类型
	 * @return
	 */
	List<TranCarVo> findOrgList(Long orgId, List<Integer> carStatusList, String sortBy);

	/**
	 * 查询运输车辆信息
	 * @param contractId
	 * @return
	 */
	List<TranCar> findAll(Long contractId);

	/**
	 * 根据车牌号查询车辆
	 *
	 * @param carNo
	 * @return
	 */
	TranCar findByCarNo(String carNo);

	/**
	 * 分页查询车辆
	 *
	 * @param code
	 * @param carNo
	 * @param pageIndex
	 * @param limit
	 * @return
	 */
	IPage<TranCarVo> selectPage(String code, String carNo, Integer pageIndex, Integer limit);

	/**
	 * 更新车辆状态
	 *
	 * @param carId            车辆id
	 * @param carStatus        车辆状态
	 * @param requeue        是否需要重新排队
	 * @param invoiceId        车辆运输的发货单id
	 * @return
	 */
	int updateStatus(Long orgId, Long carId, Integer carStatus, boolean requeue, Long invoiceId);

	/**
	 * 根据车辆id查询车辆自编号
	 *
	 * @param orgId
	 * @param carId
	 * @param taskTime
	 * @return
	 */
	String queryCarCode(Long orgId, Long carId, String taskTime);

	/**
	 * 根据自编号,查询车辆
	 *
	 * @param orgId    站点id
	 * @param code     自编码
	 * @param taskTime 运输时间
	 * @return
	 */
	Long queryCarId(Long orgId, String code, String taskTime);

	/**
	 * 查询专用于配额票的车辆
	 *
	 * @param orgId
	 * @return
	 */
	List<TranCarVo> findQuotaList(Long orgId);
}
